package br.com.equus.entidade;

import static javax.persistence.GenerationType.IDENTITY;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.envers.Audited;

import br.com.arquitetura.entidade.Entidade;
import br.com.arquitetura.util.Combo;

@Entity
@Table(name = "EQ_PRODUTO", catalog = "EQUUS")
@Audited
public class Produto extends Entidade<Integer> implements Combo {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "ID_PRODUTO", unique = true, nullable = false)
	private Integer id;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_CATEGORIA", referencedColumnName = "ID_CATEGORIA")
	private Categoria categoria;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_UNIDADE_MEDIDA", referencedColumnName = "ID_UNIDADE_MEDIDA")
	private UnidadeMedida unidadeMedida;

	@Column(name = "DSC_DESCRICAO", nullable = false, length = 255)
	private String descricao;

	@Column(name = "PESO")
	private Double peso;

	@Column(name = "FLG_CONTROLADO")
	private Boolean controlado;

	@Column(name = "QTD_MINIMA")
	private Double qtdMinima;

	@Transient
	private String qtdMinimaToString;

	@Transient
	private String pesoToString;

	@Transient
	private String controladoFormat;

	public Produto() {
	}

	public Produto(Integer id) {
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public String getValue() {
		return this.descricao;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public UnidadeMedida getUnidadeMedida() {
		return unidadeMedida;
	}

	public void setUnidadeMedida(UnidadeMedida unidadeMedida) {
		this.unidadeMedida = unidadeMedida;
	}

	public Boolean getControlado() {
		return controlado;
	}

	public void setControlado(Boolean controlado) {
		this.controlado = controlado;
	}

	public Double getQtdMinima() {
		return qtdMinima;
	}

	public void setQtdMinima(Double qtdMinima) {
		this.qtdMinima = qtdMinima;
	}

	public Double getPeso() {
		return peso;
	}

	public void setPeso(Double peso) {
		this.peso = peso;
	}

	public String getPesoToString() {
		return pesoToString;
	}

	public void setPesoToString(String pesoToString) {
		this.pesoToString = pesoToString;
	}

	public String getControladoFormat() {
		if (controlado != null && controlado) {
			return "Sim";
		} else {
			return "Não";
		}
	}

	public void setControladoFormat(String controladoFormat) {
		this.controladoFormat = controladoFormat;
	}

	public String getQtdMinimaToString() {
		return qtdMinimaToString;
	}

	public void setQtdMinimaToString(String qtdMinimaToString) {
		this.qtdMinimaToString = qtdMinimaToString;
	}

}
